λΉλ μκ° μ΅μ ν λ° λ°νμ μ€λ₯ λ°©μ§λ₯Ό μν TypeScriptμ import type ꡬ문μ μ΄ν΄λ³΄μΈμ. νμ μ μ© importμ κ·Έ μ΄μ μ μμ보μΈμ.
TypeScript Import Type: νμ μ μ© Import μ μΈμ λν μ¬μΈ΅ λΆμ
JavaScriptμ μμ μ§ν©μΈ TypeScriptλ λμ μΈ μΉ κ°λ° μΈκ³μ μ μ νμ΄νμ μ 곡ν©λλ€. μ£Όμ κΈ°λ₯ μ€ νλλ λ€λ₯Έ λͺ¨λμμ νμ
μ κ°μ Έμ¬ μ μλ€λ κ²μ
λλ€. κ·Έλ¬λ νμ
κ²μ¬μλ§ μ¬μ©λλ νμ
μ κ°μ Έμ€λ©΄ μ΅μ’
JavaScript λ²λ€μ λΆνμν μ½λκ° λ°μν μ μμ΅λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ TypeScriptλ import type
ꡬ문μ λμ
νμ΅λλ€. μ΄ λΈλ‘κ·Έ κ²μλ¬Όμμλ import type
μ μμΈν μ΄ν΄λ³΄κ³ κ·Έ λͺ©μ , μ¬μ©λ², μ΄μ λ° μ μ¬μ μ£Όμ μ¬νμ μ€λͺ
ν©λλ€.
import type
μ΄λ 무μμΈκ°μ?
import type
μ λͺ¨λμ νμ
μ μλ§ κ°μ Έμ¬ μ μλ TypeScript μ μ© κ΅¬λ¬ΈμΌλ‘, λͺ¨λμ λ°νμ κ°μ κ°μ Έμ€μ§ μμ΅λλ€. μ΄λ λ€λ₯Έ λͺ¨λμ νμ
μ νμ
μ£Όμ λλ νμ
κ²μ¬μ μ¬μ©ν΄μΌ νμ§λ§ λ°νμμ ν΄λΉ κ°μ μ‘μΈμ€ν νμκ° μμ λ νΉν μ μ©ν©λλ€. JavaScript μ»΄νμΌλ¬κ° μ ν μ 보μλ§ λ
μ μ μΌλ‘ μ¬μ©λλ κ²½μ° μ»΄νμΌ μ€μ κ°μ Έμ¨ λͺ¨λμ μλ΅νλ―λ‘ λ²λ€ ν¬κΈ°κ° μ§μ μ μΌλ‘ μμμ§λλ€.
μ import type
μ μ¬μ©ν΄μΌ ν κΉμ?
import type
μ μ¬μ©ν΄μΌ νλ λͺ κ°μ§ μ€λλ ₯ μλ μ΄μ κ° μμ΅λλ€.
- ν₯μλ λ²λ€ ν¬κΈ°: νμ€
import
λ¬Έμ μ¬μ©νμ¬ λͺ¨λμ κ°μ Έμ¬ λ μ 체 λͺ¨λμ΄ μμ±λ JavaScriptμ ν¬ν¨λ©λλ€. ν΄λΉ λͺ¨λμ νμ λ§ μ¬μ©νλ κ²½μ°μλ λ§μ°¬κ°μ§μ λλ€.import type
μ μ»΄νμΌ μ€μ νμ μ λ³΄λ§ μ¬μ©νκ³ μ΅μ’ λ²λ€μ λͺ¨λμ΄ ν¬ν¨λμ§ μλλ‘ νμ¬ λ μκ³ ν¨μ¨μ μΈ λ²λ€μ λ§λλλ€. - μν μ’
μμ± λ°©μ§: μν μ’
μμ±μ λκ·λͺ¨ νλ‘μ νΈμμ μ€μν λ¬Έμ κ° λ μ μμΌλ©° λ°νμ μ€λ₯ λ° μκΈ°μΉ μμ λμμΌλ‘ μ΄μ΄μ§ μ μμ΅λλ€.
import type
μ λͺ¨λμ κ°μ κ°μ Έμ€μ§ μκ³ νμ μ μλ§ κ°μ Έμ¬ μ μλλ‘ νμ¬ μν μ’ μμ±μ λλ λ° λμμ΄ λ©λλ€. λ°λΌμ κ°μ Έμ€κΈ° νλ‘μΈμ€ μ€μ λͺ¨λ μ½λμ μ€νμ λ°©μ§ν©λλ€. - ν₯μλ μ±λ₯: λ²λ€ ν¬κΈ°κ° μμμ§λ©΄ νΉν μΉ μ ν리μΌμ΄μ
μ λ‘λ μκ°μ΄ λΉ¨λΌμ§λλ€. λ²λ€μμ λΆνμν μ½λλ₯Ό μ κ±°ν¨μΌλ‘μ¨
import type
μ μ ν리μΌμ΄μ μ μ λ°μ μΈ μ±λ₯μ ν₯μμν€λ λ° λμμ΄ λ©λλ€. - ν₯μλ μ½λ λͺ
νμ±:
import type
μ μ¬μ©νλ©΄ νμ μ λ³΄λ§ κ°μ Έμ€κ³ μμμ λͺ ννκ² μ μ μμ΄ μ½λμ κ°λ μ±κ³Ό μ μ§ κ΄λ¦¬κ° ν₯μλ©λλ€. μ΄λ λ€λ₯Έ κ°λ°μμκ² κ°μ Έμ¨ λͺ¨λμ΄ νμ κ²μ¬μλ§ μ¬μ©λλ€λ κ²μ μλ €μ€λλ€.
import type
μ¬μ© λ°©λ²
import type
μ ꡬ문μ κ°λ¨ν©λλ€. νμ€ import
λ¬Έμ μ¬μ©νλ λμ import type
μ μ¬μ©ν λ€μ κ°μ Έμ€λ €λ νμ
μ μ¬μ©ν©λλ€. λ€μμ κΈ°λ³Έ μμ
λλ€.
import type { User } from './user';
function greetUser(user: User): string {
return `Hello, ${user.name}!`;
}
μ΄ μμμλ ./user
λͺ¨λμμ User
νμ
μ κ°μ Έμ€κ³ μμ΅λλ€. greetUser
ν¨μμ νμ
μ£Όμμλ§ User
νμ
μ μ¬μ©νκ³ μμ΅λλ€. User
λͺ¨λμ κ°μ λ°νμμ μ‘μΈμ€ν μ μμ΅λλ€.
import type
κ³Ό μΌλ° Import κ²°ν©
type
ν€μλλ₯Ό μ¬μ©νμ¬ λμΌν λ¬Έμ₯μμ import type
κ³Ό μΌλ° Importλ₯Ό κ²°ν©ν μλ μμ΅λλ€.
import { someValue, type User, type Product } from './module';
function processUser(user: User): void {
// ...
}
console.log(someValue);
μ΄ κ²½μ° someValue
λ μΌλ° κ°μΌλ‘ κ°μ Έμ€κ³ User
λ° Product
λ νμ
μΌλ‘λ§ κ°μ Έμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ¨μΌ λ¬Έμ₯μμ κ°κ³Ό νμ
μ λͺ¨λ λμΌν λͺ¨λμμ κ°μ Έμ¬ μ μμ΅λλ€.
λͺ¨λ κ²μ νμ μΌλ‘ κ°μ Έμ€κΈ°
κ°μ κ°μ Έμ€μ§ μκ³ λͺ¨λμ λͺ¨λ νμ
μ κ°μ ΈμμΌ νλ κ²½μ° import type
κ³Ό λ€μμ€νμ΄μ€ κ°μ Έμ€κΈ° ꡬ문μ μ¬μ©ν μ μμ΅λλ€.
import type * as Types from './types';
function processData(data: Types.Data): void {
// ...
}
μ¬κΈ°μλ ./types
λͺ¨λμ λͺ¨λ νμ
μ Types
λ€μμ€νμ΄μ€λ‘ κ°μ Έμ΅λλ€. κ·Έλ° λ€μ Types.
μ λμ¬λ₯Ό μ¬μ©νμ¬ νμ
μ μ‘μΈμ€ν μ μμ΅λλ€.
λ€μν νλ‘μ νΈ μ νμ μ
import type
μ μ΄μ μ λ€μν νλ‘μ νΈ μ νμ μ μ©λ©λλ€. λͺ κ°μ§ μλ λ€μκ³Ό κ°μ΅λλ€.
μ 1: React μ»΄ν¬λνΈ
νΉμ νμ μ κ°μ§ propsλ₯Ό λ°λ React μ»΄ν¬λνΈλ₯Ό κ³ λ €ν΄ λ³΄μΈμ.
import React from 'react';
import type { User } from './user';
interface Props {
user: User;
}
const UserProfile: React.FC<Props> = ({ user }) => {
return (
<div>
<h2>User Profile</h2>
<p>Name: {user.name}</p>
<p>Email: {user.email}</p>
</div>
);
};
export default UserProfile;
μ΄ React μμμλ `import type { User } from './user';`λ₯Ό μ¬μ©νμ¬ `User`μ νμ μ μλ§ κ°μ Έμ λ²λ€ ν¬κΈ°λ₯Ό μ΅μ νν©λλ€. 'user' λͺ¨λμ κ°μ μ§μ μ¬μ©νμ§ μμ΅λλ€. 'user' λͺ¨λμ μ μλ 'User' *νμ *λ§ μ¬μ©ν©λλ€.
μ 2: Node.js λ°±μλ
Node.js λ°±μλ μ ν리μΌμ΄μ μμλ λ°μ΄ν°λ² μ΄μ€ λͺ¨λΈμ νμ μΌλ‘ μ μν μ μμ΅λλ€.
import type { User } from './models';
import { createUser } from './db';
async function registerUser(userData: User): Promise<void> {
await createUser(userData);
}
μ¬κΈ°μ `import type { User } from './models';`λ User
νμ
λ§ νμ
κ²μ¬μ νμν κ²½μ° μ 체 models
λͺ¨λμ λ²λ€μ ν¬ν¨νλ κ²μ λ°©μ§ν©λλ€. createUser
ν¨μλ *λ°νμ* μ¬μ©μ νμνλ―λ‘ κ°μ Έμ΅λλ€.
μ 3: Angular μλΉμ€
Angular μλΉμ€μμλ νμ μ μ¬μ©νλ μλΉμ€λ₯Ό μ£Όμ ν μ μμ΅λλ€.
import { Injectable } from '@angular/core';
import type { Product } from './product.model';
import { ProductService } from './product.service';
@Injectable({
providedIn: 'root',
})
export class OrderService {
constructor(private productService: ProductService) {}
getFeaturedProducts(): Product[] {
return this.productService.getProducts().filter(p => p.isFeatured);
}
}
Product
νμ
μ productService.getProducts()
λ©μλμμ λ°νλλ λ°μ΄ν°μ ꡬ쑰λ₯Ό μ μνλ λ° μ¬μ©λ©λλ€. `import type { Product } from './product.model';`μ μ¬μ©νλ©΄ νμ
μ λ³΄λ§ κ°μ Έμ Angular μ ν리μΌμ΄μ
μ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€. ProductService
λ λ°νμ μ’
μμ±μ
λλ€.
λ€μν κ°λ° νκ²½μμ import type
μ¬μ©μ μ΄μ
import type
μ μ¬μ©νλ μ΄μ μ λ€μν κ°λ° μ€μ μ κ±Έμ³ νμ₯λ©λλ€.
- λͺ¨λ
Έλ ν¬: λͺ¨λ
Έλ ν¬ κ΅¬μ‘° λ΄μμ
import type
μ κ°λ³ ν¨ν€μ§ λ²λ€μ ν¬κΈ°λ₯Ό μ€μ¬ λΉλ μκ°μ λ¨μΆνκ³ λ¦¬μμ€ νμ©λλ₯Ό λμ λλ€. - λ§μ΄ν¬λ‘μλΉμ€: λ§μ΄ν¬λ‘μλΉμ€ μν€ν
μ²μμ
import type
μ νμν νμ μ λ³΄λ§ κ°μ Έμ€λλ‘ νμ¬ μ’ μμ± κ΄λ¦¬λ₯Ό λ¨μννκ³ μλΉμ€μ λͺ¨λμ±μ ν₯μμν΅λλ€. - μλ²λ¦¬μ€ ν¨μ: μλ²λ¦¬μ€ ν¨μ νκ²½μμ
import type
μ ν¨μ λ°°ν¬ ν¨ν€μ§ ν¬κΈ°λ₯Ό μ€μ¬ μ½λ μ€ννΈ μκ°μ λ¨μΆνκ³ λ¦¬μμ€ μλΉλ₯Ό μ΅μ νν©λλ€. - ν¬λ‘μ€ νλ«νΌ κ°λ°: μΉ, λͺ¨λ°μΌ λλ λ°μ€ν¬ν± νλ«νΌμ©μΌλ‘ κ°λ°νλ
import type
μ λ€μν νκ²½μμ μΌκ΄λ νμ κ²μ¬λ₯Ό 보μ₯νκ³ λ°νμ μ€λ₯ κ°λ₯μ±μ μ€μ λλ€.
μ μ¬μ μ£Όμ μ¬ν
import type
μ μΌλ°μ μΌλ‘ μ μ΅νμ§λ§ λͺ κ°μ§ μ£Όμν΄μΌ ν μ¬νμ΄ μμ΅λλ€.
- TypeScript λ²μ μꡬ μ¬ν:
import type
μ TypeScript 3.8μ λμ λμμ΅λλ€. μ΄ κ΅¬λ¬Έμ μ¬μ©νλ €λ©΄ μ΅μν μ΄ λ²μ μ TypeScriptλ₯Ό μ¬μ©ν΄μΌ ν©λλ€. - λ°νμ μ¬μ©:
import type
μΌλ‘ κ°μ Έμ¨ κ°μ λ°νμμ μ¬μ©ν μ μμ΅λλ€. λ°νμμ λͺ¨λμ κ°μ μ‘μΈμ€ν΄μΌ νλ κ²½μ° μΌλ°import
λ¬Έμ μ¬μ©ν΄μΌ ν©λλ€.import type
μΌλ‘ κ°μ Έμ¨ κ°μ λ°νμμ μ¬μ©νλ €κ³ νλ©΄ μ»΄νμΌ μκ° μ€λ₯κ° λ°μν©λλ€. - νΈλμ€νμΌλ¬ λ° λ²λ€λ¬: νΈλμ€νμΌλ¬(μ: Babel) λ° λ²λ€λ¬(μ: Webpack, Rollup, Parcel)κ°
import type
λ¬Έμ μ¬λ°λ₯΄κ² μ²λ¦¬νλλ‘ κ΅¬μ±λμλμ§ νμΈνμΈμ. λλΆλΆμ μ΅μ λꡬλimport type
μ λ°λ‘ μ§μνμ§λ§ ꡬμ±μ λ€μ νμΈνλ κ²μ΄ μ’μ΅λλ€. μΌλΆ μ΄μ λꡬλ μ΄λ¬ν Importλ₯Ό μ¬λ°λ₯΄κ² μ κ±°νκΈ° μν΄ νΉμ νλ¬κ·ΈμΈμ΄λ ꡬμ±μ΄ νμν μ μμ΅λλ€.
import type
μ¬μ© λͺ¨λ² μ¬λ‘
import type
μ ν¨κ³Όμ μΌλ‘ μ¬μ©νλ €λ©΄ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό κ³ λ €νμΈμ.
- κ°λ₯ν κ²½μ°
import type
μ¬μ©: λͺ¨λμ νμ μ μμ λν΄μλ§ μ¬μ©νλ κ²½μ° νμimport type
μ μ¬μ©νμΈμ. μ΄λ κ² νλ©΄ λ²λ€ ν¬κΈ°λ₯Ό μ€μ΄κ³ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€. import type
κ³Ό μΌλ° Import κ²°ν©: λμΌν λͺ¨λμμ κ°κ³Ό νμ μ λͺ¨λ κ°μ Έμ¬ λ κ²°ν©λ ꡬ문μ μ¬μ©νμ¬ μ½λλ₯Ό κ°κ²°νκ³ μ½κΈ° μ½κ² μ μ§νμΈμ.- νμ
μ μ λΆλ¦¬: νμ
μ μλ₯Ό λ³λμ νμΌμ΄λ λͺ¨λμ μ μ§νλ κ²μ κ³ λ €νμΈμ. μ΄λ κ² νλ©΄
import type
μ μ¬μ©νμ¬ νμν νμ λ§ μλ³νκ³ κ°μ Έμ€κΈ° μ½μ΅λλ€. - Import μ κΈ°μ μΌλ‘ κ²ν : νλ‘μ νΈκ° νμ₯λ¨μ λ°λΌ Importλ₯Ό μ κΈ°μ μΌλ‘ κ²ν νμ¬ λΆνμν λͺ¨λμ΄λ κ°μ κ°μ Έμ€μ§ μλλ‘ νμΈμ. μ μ ν κ·μΉμ΄ μλ ESLintμ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μ΄ νλ‘μΈμ€λ₯Ό μλννλ λ° λμμ λ°μ μ μμ΅λλ€.
- μ¬μ©λ² λ¬Έμν: νΉμ μ¬λ‘μμ
import type
μ μ¬μ©νλ μ΄μ λ₯Ό μ€λͺ νλ μ£Όμμ μ½λμ μΆκ°νμΈμ. μ΄λ κ² νλ©΄ λ€λ₯Έ κ°λ°μκ° μλλ₯Ό μ΄ν΄νκ³ μ½λλ₯Ό λ μ½κ² μ μ§ κ΄λ¦¬νλ λ° λμμ΄ λ©λλ€.
κ΅μ ν(i18n) λ° νμ§ν(l10n) κ³ λ € μ¬ν
κ΅μ ν(i18n) λ° νμ§ν(l10n)κ° νμν νλ‘μ νΈ μμ
μ ν λλ import type
μ΄ μ½λμ λ―ΈμΉλ μν₯μ κ³ λ €νλ κ²μ΄ μ€μν©λλ€. λͺ
μ¬ν΄μΌ ν λͺ κ°μ§ μ¬νμ λ€μκ³Ό κ°μ΅λλ€.
- λ²μλ λ¬Έμμ΄μ λν νμ
μ μ: νμ
μ μλ₯Ό μ¬μ©νμ¬ λ²μλ λ¬Έμμ΄μ λνλ΄λ κ²½μ°
import type
μ μ¬μ©νμ¬ μ€μ λ²μ νμΌμ λ²λ€μ ν¬ν¨νμ§ μκ³ μ΄λ¬ν νμ μ κ°μ Έμ¬ μ μμ΅λλ€. μ΄λ κ² νλ©΄ λ²λ€ ν¬κΈ°λ₯Ό μ€μ΄κ³ νΉν λ²μλμ΄ λ§μ κ²½μ° μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€. - λ‘μΌμΌλ³ νμ
: λ‘μΌμΌμ λ°λΌ λ€λ₯Έ νμ
μ μκ° μμ μ μμ΅λλ€.
import type
μ μ¬μ©νλ©΄ λ€λ₯Έ λ‘μΌμΌμ λν νμ μ μλ₯Ό ν¬ν¨νμ§ μκ³ λμ λ‘μΌμΌμ λν νμ μ μλ₯Ό μ νμ μΌλ‘ κ°μ Έμ¬ μ μμ΅λλ€. - λ‘μΌμΌ λ°μ΄ν°μ λν λμ Import: κ²½μ°μ λ°λΌ λ°νμμ λ‘μΌμΌλ³ λ°μ΄ν°λ₯Ό λμ μΌλ‘ λ‘λν΄μΌ ν μ μμ΅λλ€. μ΄λ¬ν μλ리μ€μμλ λ°μ΄ν°μ λν΄ μΌλ°
import
λ¬Έμ μ¬μ©νκ³ κ΄λ ¨ νμ μ μμ λν΄import type
μ μ¬μ©ν μ μμ΅λλ€.
λ€μν κ΅κ°μ μ
λ€μν μλ리μ€μμ import type
μ μ¬μ©νλ λ°©λ²μ 보μ¬μ£Όλ λͺ κ°μ§ μλ λ€μκ³Ό κ°μ΅λλ€.
- μ μ μκ±°λ νλ«νΌ(κΈλ‘λ²): μ μΈκ³μ μΌλ‘ μ νμ νλ§€νλ μ μ μκ±°λ νλ«νΌμ
import type
μ μ¬μ©νμ¬ μ ν μ νμ μ μν©λλ€. μ΄λ₯Ό ν΅ν΄ μ ν λ°μ΄ν° νμ μ μ§μμ κ΄κ³μμ΄ μΌκ΄μ±μ μ μ§νλ©΄μ λ²λ€ ν¬κΈ°λ₯Ό μ€μΌ μ μμ΅λλ€. μλ₯Ό λ€μ΄:import type { Product } from './product.types'; function displayProductDetails(product: Product) { // ... }
- μλ£ μ±(λ
μΌ): λ
μΌμ μλ£ μ ν리μΌμ΄μ
μ
import type
μ μ¬μ©νμ¬ νμ λ°μ΄ν° νμ μ μ μν©λλ€. μ΄λ λΆνμν μ½λκ° λ²λ€μ ν¬ν¨λλ κ²μ μ΅μννμ¬ νμ§ λ°μ΄ν° κ°μΈ μ 보 λ³΄νΈ κ·μ (μ: GDPR)μ μ€μνλλ‘ ν©λλ€.import type { Patient } from './patient.types'; function anonymizePatientData(patient: Patient) { // ... }
- κ΅μ‘ νλ«νΌ(μΌλ³Έ): μΌλ³Έμ κ΅μ‘ νλ«νΌμ
import type
μ μ¬μ©νμ¬ κ°μ μλ£ μ νμ μ μν©λλ€. μ΄λ νΉν λλμ μ½ν μΈ λ₯Ό μ²λ¦¬ν λ νλ«νΌ μ±λ₯μ μ΅μ ννλ λ° λμμ΄ λ©λλ€.import type { CourseMaterial } from './course.types'; function renderCourseMaterial(material: CourseMaterial) { // ... }
- κΈμ΅ μλΉμ€ μ±(λΈλΌμ§): λΈλΌμ§μ κΈμ΅ μλΉμ€ μ ν리μΌμ΄μ
μ
import type
μ μ¬μ©νμ¬ κ±°λ μ νμ μ μν©λλ€. μ΄λ λ°μ΄ν° μΌκ΄μ±μ 보μ₯νκ³ λ²λ€ ν¬κΈ°λ₯Ό μ΅μννμ¬ μ ν리μΌμ΄μ μ ν¨μ¨μ±κ³Ό μ λ’°μ±μ ν₯μμν΅λλ€.import type { Transaction } from './transaction.types'; function processTransaction(transaction: Transaction) { // ... }
κ²°λ‘
import type
μ TypeScriptμ κ°λ ₯ν κΈ°λ₯μΌλ‘, λͺ¨λμ λ°νμ κ°μ κ°μ Έμ€μ§ μκ³ νμ
μ μλ§ κ°μ Έμ μ½λλ₯Ό μ΅μ νν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ²λ€ ν¬κΈ°λ₯Ό κ°μ νκ³ , μν μ’
μμ±μ μ€μ΄λ©°, μ±λ₯μ ν₯μμν€κ³ , μ½λ λͺ
νμ±μ λμΌ μ μμ΅λλ€. μ΄ λΈλ‘κ·Έ κ²μλ¬Όμ μ€λͺ
λ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ©΄ import type
μ ν¨κ³Όμ μΌλ‘ μ¬μ©νμ¬ λ ν¨μ¨μ μ΄κ³ μ μ§ κ΄λ¦¬ κ°λ₯ν TypeScript μ½λλ₯Ό μμ±ν μ μμ΅λλ€. TypeScriptκ° κ³μ λ°μ ν¨μ λ°λΌ νμ₯ κ°λ₯νκ³ μ±λ₯μ΄ λ°μ΄λ μ ν리μΌμ΄μ
μ ꡬμΆνλ €λ©΄ import type
κ³Ό κ°μ κΈ°λ₯μ μ±ννλ κ²μ΄ μ€μν©λλ€.